
def correct_unit(value, unit):
    if not _is_value_in_range(value,1):
        return (value,_get_unit_name(unit,value))
    
    if unit.lower() == 'meter':
        if _is_value_in_range(value * 100, 100):
            unit = "cm"
            value *= 100
        elif _is_value_in_range(value * 1000, 1000):
            unit = "mm"
            value *= 1000
    elif unit.lower() == 'kg':
        if _is_value_in_range(value * 1000, 1000):
            unit = "gram"
            value *= 1000
    elif unit.lower() == 'hour':
        if _is_value_in_range(value * 60, 60):
            unit = "minute"
            value *= 60
        elif _is_value_in_range(value * 3600, 3600):
            unit = "second"
            value *= 3600
    elif unit.lower() == 'minute':
        if _is_value_in_range(value * 60, 60):
            unit = "second"
            value *= 60
         
    return (value,_get_unit_name(unit, value))
                
def _is_value_in_range(value, inrange):
    if value < abs(inrange):
        return True
    return False

def _get_unit_name(base_unit_name, value):
    if  base_unit_name == 'meter' \
    or base_unit_name == 'gram' \
    or base_unit_name == 'hour' \
    or base_unit_name == 'minute' \
    or base_unit_name == 'second':
        if value >= 2 :  
            return base_unit_name + "s"
    return base_unit_name